"""

用于生成鼠标点击脚本。使用 KeymommuseGO 可以运行。
脚本有什么用呢……
SailingGO

用法：

在 downloads/007_input.txt 中输入每章的节数，用列表。例如[3,3]
输出 downloads/007_output，用 KeymommuseGO 运行。

参考格式
[
 [3000, "EM", "mouse right down", ["0.05208%", "0.1852%"]],    // 开始运行 `3000ms` 后，在屏幕相对坐标 `(0.05208, 0.1852)`即 `(100,200)` 处 `按下鼠标右键`；
 [50,   "EM", "mouse right up",   ["0.05208%", "0.1852%"]],    // 等待 `50ms` 后在相同位置 `抬起鼠标右键`；
 [1000, "EK", "key down",         [70, "F", 0]],                                   // 等待 `1000ms` 后 `按下f键`；
 [50,   "EK", "key up",           [70, "F", 0]],                                   // 等待 `50ms` 后 `抬起f键`；
 [100,  "EM", "mouse left down",  ["0.2604%", "0.4630%"]],      // 等待 `100ms` 后，在屏幕相对坐标 `(0.2604, 0.4630)`即 `(500, 500)` 处 `按下鼠标左键`；
 [100,  "EM", "mouse move",       ["0.2604%", "0.5556%"]],       // 等待 `100ms` 后，鼠标移动至相对坐标 `(0.2604, 0.5556)`即 `(500, 600)` 位置；
 [100,  "EM", "mouse left up",  ["0.3125%", "0.5556%"]],                   // 等待 `100ms` 后，在屏幕相对坐标 `(0.3125, 0.5556)`即 `(600, 600)` 处 `抬起鼠标左键`；
 [100,  "EX", "input",            "你好 world"],                                   // 等待 `100ms` 后，在当前位置输入 `你好 world` 文字。
]
直接运行指定脚本:
> ./KeymouseGo scripts/0314_1452.txt

1920 * 1080
播放坐标：["0.38489583","0.61666667"]
第 0 个视频坐标：["0.79583333","0.275"]
步长：0.037037037037037037，共 18 步
第 18 个视频：["0.79583333",0.941666667]
按键时间设为 200 ms

"""

import json

def click(time, x, y):
    str = f' [{time},"EM","mouse left down",["{x}%","{y}%"]],\n [200,"EM","mouse left up",["{x}%","{y}%"]],\n'
    return str

def lesson(n):
    # n 代表第 n 个视频，从 0 开始
    str = click(2000000, 0.79583333, 0.275 + n * 0.037037037037037037) + click(10000, 0.38489583, 0.61666667)
    return str

# 使用了with语句来打开文件。with语句的好处是它会在代码块结束后自动关闭文件，即使在代码块执行过程中发生了异常也能保证文件被正确关闭。
with open("downloads/007_input.txt", "r") as file:
    content_str = file.readline().strip()
    # 引入 json 模块，使用 json.loads() 函数将字符串形式的列表转换为实际的列表对象。json 模块在处理数据转换时相对更安全，它会按照 json 格式的规范来解析字符串，不会执行任何潜在的恶意代码，所以这种方法更推荐用于从文件中读取数据并进行转换。
    int_list = json.loads(content_str)  

with open("downloads/007_output.txt", "w") as file:
    file.write("[\n")

with open("downloads/007_output.txt", "a") as file:
    n = 0
    for chapter in int_list:
        for section in range(chapter):
            file.write(lesson(n))
            n += 1
        n += 1
    file.write("]")



